package com.spdd.mt.biz.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.spdd.mt.common.base.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.util.Date;

/**
 * <p>
 * 充值订单表
 * </p>
 *
 * @author shanfeilong
 * @since 2025-04-02
 */
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName("mt_recharge_order")
public class MtRechargeOrderEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /** 美团商⼾编码 */
    @TableField("merch_no")
    private String merchNo;

    /** 美团电商平台交易单号 */
    @TableField("mt_order_no")
    private String mtOrderNo;

    /** ⼿机号 */
    @TableField("account")
    private String account;

    /** 商品编码 */
    @TableField("product_code")
    private String productCode;

    /** 商品类型 ProductTypeEnum */
    @TableField("product_type")
    private Integer productType;

    /** 时间戳 */
    @TableField("timestamp")
    private String timestamp;

    /** 回调地址 */
    @TableField("notify_url")
    private String notifyUrl;

    /** 平台业务订单号 */
    @TableField("order_no")
    private String orderNo;

    /** 供应商(SPDD)订单号 */
    @TableField("supplier_order_no")
    private String supplierOrderNo;

    /** 面额 */
    @TableField("face_price")
    private Integer facePrice;

    /** 运营商编码 */
    @TableField("operator")
    private String operator;

    /** 省份编码 */
    @TableField("province_code")
    private String provinceCode;

    /** 省份名称 */
    @TableField("province_name")
    private String provinceName;

    /** 购买数量 */
    @TableField("buy_num")
    private Integer buyNum;

    /** 供应商编码 */
    @TableField("supplier_code")
    private String supplierCode;

    /** 结算⾦额 */
    @TableField("contract_price")
    private String contractPrice;

    /** 供应商结算金额 */
    @TableField("supplier_contract_price")
    private String supplierContractPrice;

    /** 订单状态 */
    @TableField("order_status")
    private Integer orderStatus;

    /** 交易月份 */
    @TableField("trade_month")
    private String tradeMonth;

    /** 交易日期 */
    @TableField("trade_date")
    private String tradeDate;

    /** 完成日期 */
    @TableField("finish_date")
    private String finishDate;

    /** 充值开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("start_time")
    private Date startTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("finish_time")
    private Date finishTime;

    /** 成功时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("success_time")
    private Date successTime;

    /** 原运营商编码 */
    @TableField("origin_operator")
    private String originOperator;

    /** 现运营商编码 */
    @TableField("current_operator")
    private String currentOperator;

    /** 供应商返回码 */
    @TableField("supplier_return_code")
    private String supplierReturnCode;

    /** 供应商返回信息 */
    @TableField("supplier_return_message")
    private String supplierReturnMessage;

    /** 返回码 */
    @TableField("return_code")
    private String returnCode;

    /** 返回状态 success fail processing */
    @TableField("return_status")
    private String returnStatus;

    /** 返回信息 */
    @TableField("return_message")
    private String returnMessage;

    /** 供应商回调返回码 */
    @TableField("notify_return_code")
    private String notifyReturnCode;

    /** 供应商回调返回信息 */
    @TableField("notify_return_message")
    private String notifyReturnMessage;

    /** 通知状态:0-待通知 1-通知成功 2-通知失败 */
    @TableField("notify_status")
    private Integer notifyStatus;

    /** 通知次数 */
    @TableField("notify_times")
    private Integer notifyTimes;

    /** 最近一次通知时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("last_notify_time")
    private Date lastNotifyTime;

    /** 重发状态:0-无需重发 1-待重发 2-重发成功 */
    @TableField("reorder_status")
    private Integer reorderStatus;

    /** 重发次数 */
    @TableField("reorder_times")
    private Integer reorderTimes;

    /** 最近一次重发时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField("last_reorder_time")
    private Date lastReorderTime;

    /** 创建时间 */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /** 更新时间 */
    @TableField(value = "update_time", fill = FieldFill.UPDATE)
    private Date updateTime;

}
